#ifndef LICENSEPLATERECOGNIZER_H
#define LICENSEPLATERECOGNIZER_H

#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QImage>

class LicensePlateRecognizer : public QObject
{
    Q_OBJECT
public:
    explicit LicensePlateRecognizer(QObject *parent = nullptr);
    ~LicensePlateRecognizer();

    // 设置API访问凭证
    void setCredentials(const QString &apiKey, const QString &secretKey);

    // 识别车牌
    void recognizeLicensePlate(const QImage &image);

    // 从文件加载图片
    QImage loadImage(const QString &filePath);

    // 返回车牌号
    QString carNumber();

signals:
    // 识别完成信号
    void recognitionCompleted(const QString &plateNumber, const QString &color);
    // 识别错误信号
    void recognitionError(const QString &error);

private slots:
    // 处理网络回复
    void handleNetworkReply(QNetworkReply *reply);

private:
    // 获取访问令牌
    void getAccessToken();
    // 图片转Base64
    QString imageToBase64(const QImage &image);

    QNetworkAccessManager *m_networkManager;  // 网络管理器
    QString m_apiKey;                         // API Key
    QString m_secretKey;                      // Secret Key
    QString m_accessToken;                    // 访问令牌
    bool m_isGettingToken;                    // 是否正在获取令牌标志
    QString m_CarNumber;                      // 用于返回车牌号
};

#endif // LICENSEPLATERECOGNIZER_H
